# @Data  : 2019/11/29 09:57
# @Author:
# @File  : FwConfigUtils.py


import os, sys
import configparser
from ..utils.robotargumentparser import RobotArgumentParser
from ..const import prompt
import logging

logger = logging.getLogger("FwConfigUtils")

# 获取根目录
root_path = os.path.dirname(os.path.abspath(__file__)).split(os.sep + "Lib")[0]

#case路径
case_path = os.path.join(root_path, 'Case')

# 默认的config路径
config_path = os.path.join(case_path, "config.ini")

# 获取所有的文件名称或文件夹名称
listdir = os.listdir(case_path)

# 判断ride界面上是否有输入-v参数，格式: -v zprofile:dev
# 如果参数带-v/--variable且带有zprofile描述如：-v/--variable zprofile:dev，则使用root_path/Case路径下的config-dev.ini
# 否则使用root_path/Case路径下的默认config.ini

# 用户默认配置参数及默认变量文件
project_code_default = 'default'
cfgName = "config.ini"

if len(sys.argv) > 1:  # 用于判空，不执行robot时，sys.argv为1
    try:
        rap = RobotArgumentParser()
        project_code = rap.getZCMVariableValue('zprofile')
        if project_code:
            cfgName = "config-{}.ini".format(project_code)
            cfgName2 = "config_{}.ini".format(project_code)
            if cfgName in listdir:
                config_path = os.path.join(root_path, 'Case', cfgName)
            elif cfgName2 in listdir:
                config_path = os.path.join(root_path, 'Case', cfgName2)
            else :
                logger.error(prompt.config["nameErr"].format(profile=project_code), exc_info=1)
    except:
        logger.error("parse argument error", exc_info=1)


class FwConfigUtils(object):
    """
    可用于初始化部分功能
    """
    config = configparser.ConfigParser()
    config.read(config_path, encoding='utf-8')
    count_util = 0

    def __init__(self):
        self.count_util += 1
        print("FwConfigUtils:", self.count_util)

    @classmethod
    def get_handle(cls):
        """
        将读取config.ini的句柄，作为类属性返回
        :return:
        """
        return cls.config
